/**
 *====================================================
 * 文件名称: FinanceLoanActionApi.java
 * 修订记录：
 * No    日期				作者(操作:具体内容)
 * 1.    2015年9月29日			chenxy(创建:创建文件)
 *====================================================
 * 类描述：(说明未实现或其它不应生成javadoc的内容)
 */
package com.yuexunit.finance.project.action.v1;

import java.math.BigDecimal;
import java.util.Date;

import com.yuexunit.finance.context.FinVersion1;
import com.yuexunit.finance.project.action.v1.model.FinanceMoneyStatement;
import com.yuexunit.finance.project.action.v1.model.FinanceOtherMoneyStatement;
import com.yuexunit.finance.project.action.v1.model.InterestEstimate;
import com.yuexunit.finance.project.action.v1.model.Receivables;
import com.yuexunit.finance.project.action.v1.model.input.FinanceWriteoffParams;
import com.yuexunit.finance.project.action.v1.model.input.LoanNoticeConsentParams;
import com.yuexunit.finance.project.action.v1.model.input.LoanNoticeParams;
import com.yuexunit.finance.project.action.v1.model.input.LoanNoticeUpdateParams;
import com.yuexunit.finance.project.action.v1.model.input.ReceivablesConsentParams;
import com.yuexunit.finance.project.action.v1.model.input.ReceivablesUpdateParams;
import com.yuexunit.finance.project.action.v1.model.output.BillReceivableDetail;
import com.yuexunit.finance.project.action.v1.model.output.Capital;
import com.yuexunit.finance.project.action.v1.model.output.FinanceCreditDetail;
import com.yuexunit.finance.project.action.v1.model.output.FinanceCreditLineInfo;
import com.yuexunit.finance.project.action.v1.model.output.FinanceWriteoffDetail;
import com.yuexunit.finance.project.action.v1.model.output.FinanceWriteoffLineInfo;
import com.yuexunit.finance.project.action.v1.model.output.InterestDelayDetail;
import com.yuexunit.finance.project.action.v1.model.output.InterestDelayLineInfo;
import com.yuexunit.finance.project.action.v1.model.output.LoanNoticeDetail;
import com.yuexunit.finance.project.action.v1.model.output.LoanNoticeLineInfo;
import com.yuexunit.finance.project.action.v1.model.output.QuarterSettlementLineInfo;
import com.yuexunit.finance.project.action.v1.model.output.ReceivablesDetail;
import com.yuexunit.finance.project.action.v1.model.output.ReceivablesLineInfo;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;
import com.yuexunit.web.annotation.Action;
import com.yuexunit.web.annotation.Parameter;
import com.yuexunit.web.annotation.Permission;

/** 
 * @ClassName: FinanceLoanActionApi 
 * @Description: TODO(这里用一句话描述这个类的作用) 
 * @author chenxy 
 * @date 2015年9月29日 下午1:21:16  
 */
public interface FinanceLoanActionApi {
	
	@Permission
	@Action(version = FinVersion1.class, description = "利息估算-指定货箱(提前还款/提货/赎货 申请审核页面的利息调用使用)")
	public InterestEstimate interestEstimationFinanceInventory(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "inventoryId", description = "货箱ID") Long[] inventoryId,
			@Parameter(name = "cutoffDate", description = "截止日期 yyyy-mm-dd") String cutoffDate
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "利息估算-指定货箱(提前还款/提货/赎货 申请审核页面的利息调用使用)")
	public InterestEstimate interestEstimationFinanceInventory1(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "inventoryId", description = "货箱ID") Long[] inventoryId,
			@Parameter(name = "cutoffDate", description = "截止日期 yyyy-mm-dd") String cutoffDate
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "阶段利息结算")
	public String createInterestSettlement(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "inventoryId", description = "货箱ID") Long[] inventoryId,
			@Parameter(name = "days", description = "收息天数") Integer days
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询利息结算")
	public PageList<QuarterSettlementLineInfo> inquiryInterestSettlement(
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "page", description = "﻿分页参数", nullable = true) PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询利息结算详情")
	public QuarterSettlementLineInfo inquiryInterestSettlementDetail(
			@Parameter(name = "quarterSettlementId", description = "﻿利息单ID") Long quarterSettlementId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询利息")
	@Parameter(name = "interest", description = "利息金额")
	public BigDecimal inquiryFinanceInterest(
			@Parameter(name = "financeId", description = "﻿利息单ID") Long financeId,
			@Parameter(name = "bulkstockAmount", description = "货物金额") BigDecimal bulkstockAmount,
			@Parameter(name = "interestDate", description = "﻿计息时间") Date interestDate
	);

	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "延期计息申请")
	@Parameter(name = "interestDelayId", description = "延期计息申请ID")
	public String createInterestDelayApplication(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId,
			@Parameter(name = "delayLimitTime", description = "顺延期限(顺延天数)") Integer delayLimitTime,
			@Parameter(name = "applicantReson", description = "申请原因") Integer applicantReson,
			@Parameter(name = "remark", description = "申请备注") String remark
	);

	@Permission
	@Action(version = FinVersion1.class, description = "修改延期计息申请")
	public void updateInterestDelayApplication(
			@Parameter(name = "interestDelayId", description = "延期计息申请ID") Long interestDelayId,
			@Parameter(name = "delayLimitTime", description = "顺延期限(顺延天数)") Integer delayLimitTime
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "取消延期计息申请")
	public void cancelInterestDelayApplication(
			@Parameter(name = "interestDelayId", description = "延期计息申请ID") Long interestDelayId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "同意延期计息申请")
	public void consentInterestDelayApplication(
			@Parameter(name = "interestDelayId", description = "延期计息申请ID") Long interestDelayId,
			@Parameter(name = "auditRemark", description = "审核备注") String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "拒绝延期计息申请")
	public void opposeInterestDelayApplication(
			@Parameter(name = "interestDelayId", description = "延期计息申请ID") Long interestDelayId,
			@Parameter(name = "disagreeReson", description = "拒绝原因") Integer disagreeReson,
			@Parameter(name = "auditRemark", description = "审核备注") String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "延期计息申请明细")
	public InterestDelayDetail inquireInterestDelayApplicationDetail(
			@Parameter(name = "interestDelayId", description = "延期计息申请ID") Long interestDelayId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "延期计息申请列表")
	public PageList<InterestDelayLineInfo> inquireInterestDelayApplicationPageList(
			@Parameter(name = "interestDelayId", description = "延期计息申请ID", nullable = true) Long[] interestDelayIds,
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber,
			@Parameter(name = "enterpriseId", description = "﻿融资企业ID", nullable = true) Long enterpriseId,
			@Parameter(name = "enterpriseName", description = "融资企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "applicationState", description = "申请状态 1:同意/2:拒绝", nullable = true) Integer applicationState,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "创建放款通知")
	@Parameter(name = "loanNoticeId", description = "放款通知ID")
	public String createLoanNotice(LoanNoticeParams params);

	@Permission
	@Action(version = FinVersion1.class, description = "修改放款通知")
	public void updateLoanNotice(LoanNoticeUpdateParams loanNoticeUpdate);
	
	@Permission
	@Action(version = FinVersion1.class, description = "审核放款通知")
	public void consentLoanNotice(LoanNoticeConsentParams params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "审核放款通知")
	public void opposeLoanNotice(
			@Parameter(name = "loanNoticeId", description = "放款通知ID") Long loanNoticeId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "多级审核意见保存")
	public void saveLoanNoticeAudit(
			@Parameter(name = "auditType", description = "﻿审核类型 1:风控审核/ 2:风控分管领导审核/ 3:资金审核/ 4:资金分管领导审核 /5:总经理审核 /6:董事长审核") Integer auditType,
			@Parameter(name = "audit", description = "﻿审核意见", nullable = true) String audit,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "loanNoticeId", description = "放款通知ID") Long loanNoticeId,
			@Parameter(name = "autoNotice", description = "是否自动通知装货", nullable = true) Boolean autoNotice
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "多级审核意见提交")
	public void submitLoanNoticeAudit(
			@Parameter(name = "auditType", description = "﻿审核类型 1:风控审核/ 2:风控分管领导审核/ 3:资金审核/ 4:资金分管领导审核 /5:总经理审核 /6:董事长审核") Integer auditType,
			@Parameter(name = "audit", description = "﻿审核意见", nullable = true) String audit,
			@Parameter(name = "auditState", description = "审核状态") Boolean auditState,
			@Parameter(name = "loanNoticeId", description = "放款通知ID") Long loanNoticeId,
			@Parameter(name = "autoNotice", description = "是否自动通知装货", nullable = true) Boolean autoNotice
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "获取放款通知明细(放款通知)")
	public LoanNoticeDetail inquireLoanNoticeDetail(
			@Parameter(name = "loanNoticeId", description = "放款通知ID") Long loanNoticeId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询放款通知列表")
	public PageList<LoanNoticeLineInfo> inquireLoanNoticePageList(
			@Parameter(name = "beginDate", description = "﻿放款开始时间", nullable = true) String beginDate,
			@Parameter(name = "endDate", description = "﻿放款结束时间", nullable = true) String endDate,
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber,
			@Parameter(name = "enterpriseId", description = "﻿融资企业ID", nullable = true) Long enterpriseId,
			@Parameter(name = "enterpriseName", description = "融资企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "bulkstockName", description = "货物名称", nullable = true) String bulkstockName,
			@Parameter(name = "productType", description = "业务类型", nullable = true) Integer productType,
			@Parameter(name = "loanState", description = "审核状态", nullable = true) Integer loanState,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "创建收款记录")
	@Parameter(name = "receivablesId", description = "确认收款ID")
	public String createReceivables(Receivables params);

	@Permission
	@Action(version = FinVersion1.class, description = "修改收款记录")
	public void updateReceivables(ReceivablesUpdateParams params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "审核收款记录")
	public void consentReceivables(ReceivablesConsentParams params);

	@Permission
	@Action(version = FinVersion1.class, description = "删除收款记录")
	public void disableReceivables(
			@Parameter(name = "receivablesId", description = "确认收款ID") Long receivablesId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "获取收款记录明细(收款通知)")
	public ReceivablesDetail inquireReceivablesDetail(
			@Parameter(name = "receivablesId", description = "确认收款ID") Long receivablesId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询收款记录列表")
	public PageList<ReceivablesLineInfo> inquireReceivablesPageList(
			@Parameter(name = "beginDate", description = "﻿开始时间", nullable = true) String beginDate,
			@Parameter(name = "endDate", description = "﻿截止时间", nullable = true) String endDate,
			@Parameter(name = "pickupId", description = "﻿提货申请ID", nullable = true) Long pickupId,
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId, 
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber,
			@Parameter(name = "enterpriseId", description = "﻿融资企业ID", nullable = true) Long enterpriseId,
			@Parameter(name = "enterpriseName", description = "融资企业名称", nullable = true) String enterpriseName,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "估值调整")
	@Parameter(name = "creditId", description = "授信调整ID")
	public String createFinanceCredit(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId, 
			@Parameter(name = "creditAmount", description = "调整﻿授信额度 负数标识下调,整数表示上调") BigDecimal creditAmount,
			@Parameter(name = "valuation", description = "货物新估值总额") BigDecimal valuation, 
			@Parameter(name = "remark", description = "﻿调整备注", nullable = true) String remark, 
			@Parameter(name = "reson", description = "﻿融资授信调整原因-系统参数ID=11", nullable = true) Integer reson,
			@Parameter(name = "bulkstockId", description = "﻿融资货物ID") Long[] bulkstockIds, 
			@Parameter(name = "evaluateAmount", description = "﻿估值单价金额") BigDecimal[] evaluateAmounts
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "追加保证金")
	@Parameter(name = "creditId", description = "调整ID")
	public String additionalFinanceDeposit(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId, 
			@Parameter(name = "amount", description = "追加数额") BigDecimal amount,
			@Parameter(name = "remark", description = "﻿备注", nullable = true) String remark, 
			@Parameter(name = "reson", description = "﻿追加原因-系统参数ID=11", nullable = true) Integer reson
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "追加保证金审核")
	public void auditAdditionalFinanceDeposit(
			@Parameter(name = "creditId", description = "﻿调整ID") Long creditId,
			@Parameter(name = "riskBail", description = "﻿调整金额", nullable = true) BigDecimal riskBail,
			@Parameter(name = "auditRemark", description = "﻿审核意见") String auditRemark,
			@Parameter(name = "auditState", description = "﻿审核状态") Integer auditState
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "补货要求")
	@Parameter(name = "creditId", description = "补货要求ID")
	public String createFinanceReplenishCredit(
			@Parameter(name = "financeId", description = "﻿融资信息ID") Long financeId, 
			@Parameter(name = "replenishAmount", description = "补货额度") BigDecimal replenishAmount,
			@Parameter(name = "valuation", description = "货物新估值总额") BigDecimal valuation, 
			@Parameter(name = "remark", description = "﻿调整备注", nullable = true) String remark, 
			@Parameter(name = "reson", description = "﻿融资授信调整原因-系统参数ID=11", nullable = true) Integer reson,
			@Parameter(name = "bulkstockId", description = "﻿融资货物ID") Long[] bulkstockIds, 
			@Parameter(name = "evaluateAmount", description = "﻿估值单价金额") BigDecimal[] evaluateAmounts,
			@Parameter(name = "loanNoticeId", description = "﻿补货放款批次") Long loanNoticeId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "补货要求-同意")
	public void consentFinanceReplenishCredit(
			@Parameter(name = "creditId", description = "﻿调整ID") Long creditId,
			@Parameter(name = "auditRemark", description = "﻿审核意见") String auditRemark
	);

	@Permission
	@Action(version = FinVersion1.class, description = "补货要求-拒绝")
	public void opposeFinanceReplenishCredit(
			@Parameter(name = "creditId", description = "﻿调整ID") Long creditId,
			@Parameter(name = "auditRemark", description = "﻿审核意见") String auditRemark
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "补货要求-补充货物")
	public void submitFinanceReplenishBulkstock(
			@Parameter(name = "creditId", description = "补货要求ID") Long creditId,
			@Parameter(name = "bulkstockInfoId", description = "大宗商品ID") Long[] bulkstockInfoId,
			@Parameter(name = "manufacturer", description = "﻿生产厂家", nullable = true) String[] manufacturer,
			@Parameter(name = "originPlace", description = "﻿产地", nullable = true) String[] originPlace,
			@Parameter(name = "weight", description = "﻿重量") BigDecimal[] weight,
			@Parameter(name = "bulkstockPrice", description = "﻿估值单价") BigDecimal[] bulkstockPrice
	);

	@Permission
	@Action(version = FinVersion1.class, description = "补货要求-补充箱")
	public void submitFinanceReplenishContainer(
			@Parameter(name = "creditId", description = "补货要求ID") Long creditId,
			@Parameter(name = "waybillNumber", description = "﻿物流运单号") String[] waybillNumber,
			@Parameter(name = "caseNumber", description = "﻿货物箱号") String[] caseNumber,
			@Parameter(name = "caseSize", description = "﻿箱型尺寸") String[] caseSize,
			@Parameter(name = "facingSlip", description = "﻿铅封号", nullable = true) String[] facingSlip,
			@Parameter(name = "trayNumber", description = "﻿托盘号", nullable = true) String[] trayNumber,
			@Parameter(name = "bulkstockInfoId", description = "大宗商品ID") Long[] bulkstockInfoId,
			@Parameter(name = "weight", description = "﻿重量") BigDecimal[] weight,
			@Parameter(name = "manufacturer", description = "﻿生产厂家", nullable = true) String[] manufacturer,
			@Parameter(name = "originPlace", description = "﻿产地", nullable = true) String[] originPlace
	);

	@Permission
	@Action(version = FinVersion1.class, description = "确认补货")
	public void confirmFinanceReplenishCredit(
			@Parameter(name = "creditId", description = "补货要求ID") Long creditId,
			@Parameter(name = "replenishId", description = "补货货物ID") Long[] replenishId,
			@Parameter(name = "evaluatePrice", description = "﻿评估单价") BigDecimal[] evaluatePrice,
			@Parameter(name = "lowestPrice", description = "﻿最低价格") BigDecimal[] lowestPrice,
			@Parameter(name = "highestPrice", description = "﻿最高价格") BigDecimal[] highestPrice
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询补货记录详情")
	public FinanceCreditDetail inquireFinanceReplenishDetail(
			@Parameter(name = "creditId", description = "授信调整ID") Long creditId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询保证金/授信额度详情")
	public FinanceCreditDetail inquireFinanceCreditDetail(
			@Parameter(name = "creditId", description = "授信调整ID") Long creditId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询保证金/授信额度/补货记录列表")
	public PageList<FinanceCreditLineInfo> inquireFinanceCreditPageList(
			@Parameter(name = "adjustment", description = "调整模式 0：未知/1：授信额度/2：保证金/3：补货") Integer adjustment, 
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId,
			@Parameter(name = "auditState", description = "﻿审核状态 0:未知/1:未审核/2:审核通过/3:审核拒绝", nullable = true) Integer auditState,
			@Parameter(name = "creditId", description = "﻿调整ID", nullable = true) Long creditId,
//			@Parameter(name = "productType", description = "业务类型", nullable = true) Integer productType,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "查询收款帐户流水记录列表")
	public PageList<FinanceMoneyStatement> inquireReceiptMoneyStatementPageList(
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId, 
			@Parameter(name = "statementSource", description = "收支来源", nullable = true) String[] statementSource, 
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber, 
			@Parameter(name = "disbursementName", description = "﻿付款单位名称", nullable = true) String disbursementName,
			@Parameter(name = "statementBeginDate", description = "﻿收款时间", nullable = true) String statementBeginDate,
			@Parameter(name = "statementEndDate", description = "﻿收款时间", nullable = true) String statementEndDate,
			@Parameter(name = "minSourceAmount", description = "﻿收款金额", nullable = true) BigDecimal minSourceAmount,
			@Parameter(name = "maxSourceAmount", description = "﻿收款金额", nullable = true) BigDecimal maxSourceAmount,
			@Parameter(name = "statementNumber", description = "﻿账单流水", nullable = true) String statementNumber,
			@Parameter(name = "verifiCancelState", description = "﻿是否核销", nullable = true) Boolean verifiCancelState,
			@Parameter(name = "productType", description = "业务类型", nullable = true) Integer productType,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询付款帐户流水记录列表")
	public PageList<FinanceMoneyStatement> inquireDisbursementMoneyStatementPageList(
			@Parameter(name = "financeId", description = "﻿融资信息ID", nullable = true) Long financeId, 
			@Parameter(name = "statementSource", description = "收支来源", nullable = true) String[] statementSource, 
			@Parameter(name = "financeNumber", description = "﻿融资编号", nullable = true) String financeNumber, 
			@Parameter(name = "receiptName", description = "﻿收款单位名称", nullable = true) String receiptName,
			@Parameter(name = "statementBeginDate", description = "﻿付款时间", nullable = true) String statementBeginDate,
			@Parameter(name = "statementEndDate", description = "﻿付款时间", nullable = true) String statementEndDate,
			@Parameter(name = "minSourceAmount", description = "﻿付款金额", nullable = true) BigDecimal minSourceAmount,
			@Parameter(name = "maxSourceAmount", description = "付款金额", nullable = true) BigDecimal maxSourceAmount,
			@Parameter(name = "statementNumber", description = "﻿账单流水", nullable = true) String statementNumber,
			@Parameter(name = "verifiCancelState", description = "﻿是否核销", nullable = true) Boolean verifiCancelState,
			@Parameter(name = "productType", description = "业务类型﻿", nullable = true) Integer productType,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "收款流水核销")
	public void verifimonthReceiptMoneyStatement(FinanceWriteoffParams params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "收款流水核销")
	public String verifiReceiptMoneyStatement(FinanceWriteoffParams params);

	@Permission
	@Action(version = FinVersion1.class, description = "付款流水核销")
	public String verifiDisbursementMoneyStatement(FinanceWriteoffParams params);
	
	@Permission
	@Action(version = FinVersion1.class, description = "流水打回")
	public void callbackMoneyStatement(
			@Parameter(name = "moneyStatementId", description = "﻿收支明细ID") Long moneyStatementId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "强制核销-收款")
	public void forceVerifiReceiptMoneyStatement(
			@Parameter(name = "moneyStatementId", description = "﻿收支明细ID") Long moneyStatementId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "收款确认")
	public void confirmReceiptMoneyStatement(
			@Parameter(name = "moneyStatementId", description = "﻿收支明细ID") Long moneyStatementId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "强制核销-付款")
	public void forceVerifiDisbursementMoneyMoneyStatement(
			@Parameter(name = "moneyStatementId", description = "﻿收支明细ID") Long moneyStatementId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "收款核销流水")
	public PageList<FinanceWriteoffLineInfo> inquireReceiptWriteoffPageList(
			@Parameter(name = "writeoffNumber", description = "﻿核销银行流水", nullable = true) String writeoffNumber,
			@Parameter(name = "beginDateTime", description = "开始时间", nullable = true) Date beginDateTime,
			@Parameter(name = "endDateTime", description = "结束时间", nullable = true) Date endDateTime,
			@Parameter(name = "disbursementName", description = "付款人", nullable = true) String disbursementName,
			@Parameter(name = "accountInfoId", description = "账户信息ID", nullable = true) Long accountInfoId,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);

	@Permission
	@Action(version = FinVersion1.class, description = "收款核销流水明细")
	public FinanceWriteoffDetail inquireReceiptWriteoffDetail(
			@Parameter(name = "writeoffId", description = "核销ID") Long writeoffId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "付款核销流水")
	public PageList<FinanceWriteoffLineInfo> inquireDisbursementWriteoffPageList(
			@Parameter(name = "writeoffNumber", description = "﻿核销银行流水", nullable = true) String writeoffNumber,
			@Parameter(name = "beginDateTime", description = "开始时间", nullable = true) Date beginDateTime,
			@Parameter(name = "endDateTime", description = "结束时间", nullable = true) Date endDateTime,
			@Parameter(name = "receiptName", description = "收款人", nullable = true) String receiptName,
			@Parameter(name = "accountInfoId", description = "账户信息ID", nullable = true) Long accountInfoId,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "付款核销流水明细")
	public FinanceWriteoffDetail inquireDisbursementWriteoffDetail(
			@Parameter(name = "writeoffId", description = "核销ID") Long writeoffId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "编制收款单")
	public String createBillReceivable(
			@Parameter(name = "disbursementBank", description = "付款银行") String disbursementBank,
			@Parameter(name = "disbursementCreditCard", description = "付款卡号") String disbursementCreditCard,
			@Parameter(name = "disbursementName", description = "付款人") String disbursementName,
			@Parameter(name = "drawee", description = "付款对象") String drawee,
			@Parameter(name = "receiptBank", description = "收款银行") String receiptBank,
			@Parameter(name = "receiptName", description = "收款人") String receiptName,
			@Parameter(name = "receiptCreditCard", description = "收款卡号") String receiptCreditCard,
			@Parameter(name = "payee", description = "收款对象") String payee,
			@Parameter(name = "writeoffRemark", description = "备注") String writeoffRemark,
			@Parameter(name = "amount", description = "金额") BigDecimal amount,
			@Parameter(name = "writeoffNumber", description = "收款流水号") String writeoffNumber,
			@Parameter(name = "billType", description = "类型 1-收款单;2-付款单") Integer billType,
			@Parameter(name = "fileUuid", description = "附件信息", nullable = true) String fileUuid,
			@Parameter(name = "loansMoneyId", description = "资金拆入信息ID", nullable = true) Long loansMoneyId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询收款单详情")
	public BillReceivableDetail inquireBillReceivableDetail(
			@Parameter(name = "billReceivableId", description = "收付款单ID") Long billReceivableId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询收款单列表")
	public PageList<BillReceivableDetail> inquireBillReceivablePageList(
			@Parameter(name = "billType", description = "类型 1-收款单;2-付款单") Integer billType,
			@Parameter(name = "startDate", description = "开始时间", nullable = true) Date startDate,
			@Parameter(name = "endDate", description = "截止时间", nullable = true) Date endDate,
			@Parameter(name = "writeoffNumber", description = "流水号", nullable = true) String writeoffNumber,
			@Parameter(name = "payee", description = "收款单位", nullable = true) String payee,
			@Parameter(name = "drawee", description = "付款单位", nullable = true) String drawee,
			@Parameter(name = "moneyStatementId", description = "收支明细ID", nullable = true) Long moneyStatementId,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "查询资金台账列表")
	public PageList<Capital> inquireCapitalPageList(
			@Parameter(name = "financeNumber", description = "融资编号", nullable = true) String financeNumber,
			@Parameter(name = "enterpriseName", description = "企业名", nullable = true) String enterpriseName,
			@Parameter(name = "startDate", description = "开始时间", nullable = true) Date startDate,
			@Parameter(name = "endDate", description = "截止时间", nullable = true) Date endDate,
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "导出资金台账EXCEL列表")
	public void exportCapitalExcel();
	
	//=====================================================================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "创建其他应收申请单")
	@Parameter(name = "otherMoneyStatementId", description = "申请单ID")
	public String createFinanceOtherMoneyStatement(FinanceOtherMoneyStatement statement);
	
	@Permission
	@Action(version = FinVersion1.class, description = "修改其他应收申请单")
	public void updateFinanceOtherMoneyStatement(FinanceOtherMoneyStatement statement);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询其他应收申请单列表")
	public PageList<FinanceOtherMoneyStatement> inquireFinanceOtherMoneyStatementPageList(
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询其他应收申请单详情")
	public FinanceOtherMoneyStatement inquireFinanceOtherMoneyStatement(
			@Parameter(name = "otherMoneyStatementId", description = "申请单ID") Long otherMoneyStatementId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "应收应付确认")
	public void confirmFinanceOtherMoneyStatement(
			@Parameter(name = "otherMoneyStatementId", description = "申请单ID") Long otherMoneyStatementId
	);
}
